package com.bawei.module_live.ui

import com.bawei.lib_mvi.IIntent

/**
 * 直播间模块 - MVI架构 Intent层
 * 
 * Intent定义了用户的所有操作意图，包括：
 * - 数据获取意图（获取直播列表、礼物列表等）
 * - 用户交互意图（关注、发送礼物等）
 * - 状态管理意图（重置状态等）
 * 
 * 每个Intent对应ViewModel中的一个处理逻辑
 */
sealed class LiveIntent :IIntent  {
    
    /**
     * 获取直播列表意图
     * @param page 页码，从1开始
     * @param pageSize 每页数量
     */
    data class FetchLiveListIntent(
        val page: Int,
        val pageSize: Int
    ) : LiveIntent()
    
    /**
     * 重置状态意图
     * 用于清空当前状态，回到初始状态
     */
    object ResetStateIntent : LiveIntent()
    
    /**
     * 获取礼物列表意图
     * 用于获取直播间可用的礼物列表
     */
    object FetchGiftListIntent : LiveIntent()
    
    /**
     * 关注用户意图
     * @param focuseUserid 关注者ID（当前用户）
     * @param focusedUserid 被关注者ID（主播）
     */
    data class FocuseUserIntent(
        val focuseUserid: Int,
        val focusedUserid: Int
    ) : LiveIntent()
    
    /**
     * 取消关注用户意图
     * @param focuseUserid 关注者ID（当前用户）
     * @param focusedUserid 被关注者ID（主播）
     */
    data class UnFocuseUserIntent(
        val focuseUserid: Int,
        val focusedUserid: Int
    ) : LiveIntent()
    
    /**
     * 检查关注状态意图
     * @param myUserId 当前用户ID
     * @param anchorId 主播ID
     */
    data class CheckFocuseStatusIntent(
        val myUserId: Int,
        val anchorId: Int
    ) : LiveIntent()
    
    /**
     * 获取榜单列表意图
     * @param type 榜单类型（如：人气榜、礼物榜等）
     */
    data class FetchOrderHotListIntent(
        val type: String
    ) : LiveIntent()
    
    /**
     * 获取直播间商品列表意图
     * @param roomId 直播间ID
     */
    data class FetchLiveRoomGoodsIntent(
        val roomId: String
    ) : LiveIntent()
}